package com.sxj.corejava.code08_常用类.枚举;

/**
 * @author 石小俊
 * @date 2025年02月18日
 */
public enum Season {
    // 由于枚举类外部不能实例化,因此在内部必须创建对应的对象,否则枚举类没有意义了
    // 此处创建的对象存在以下几个要求:
    // 1.此处创建的对象外部必须可以读取到
    // 2.外部无法修改该对象
    // 3.外部访问时不需要通过对象访问,而是直接通过类访问
    // public final static Season Spring = new Season("春天",1,3);
    // 在枚举类中,对于内部创建的对象已经做了处理,很多重复的内容会自动填充
    // 根据编码规范,所有枚举类中的对象名的字母必须全部大写
    // 由于在使用枚举类的时候,可能存在多个对象
    // 在内部创建枚举对象的时候,多个对象名之间以逗号分隔
    SPRING("春天", 1, 3),
    SUMMER("夏天", 4, 6),
    AUTUMN("秋天", 7, 9),
    WINTER("冬天", 10, 12),
    // 当调用无参构造方法时,括号可以省略
    ALL;
    private String name;    // 季节
    private int beginMonth; // 开始月份
    private int endMonth;   // 结束月份

    // 限制外部无法访问该类的构造方法
    // 在枚举类中,构造方法必须使用private修饰,不允许外部访问
    // 默认情况下,自动使用private修饰,因此修饰符可以省略
    Season(String name, int beginMonth, int endMonth) {
        this.name = name;
        this.beginMonth = beginMonth;
        this.endMonth = endMonth;
    }

    Season() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getBeginMonth() {
        return beginMonth;
    }

    public void setBeginMonth(int beginMonth) {
        this.beginMonth = beginMonth;
    }

    public int getEndMonth() {
        return endMonth;
    }

    public void setEndMonth(int endMonth) {
        this.endMonth = endMonth;
    }
}
